var fs = require('fs'); //引入文件模块
var path = require("path"); //引入路径模块
var config = require('../config'); //引入config文件 做是否为空判断 定义根目录
var express = require('express');
var router = express.Router();

/* 获取主页 */
router.get('/*', function (req, res, next) {
  // 获取项目根目录文件夹，检测该文件夹是否为空，如为空，则使用项目根目录
  var rootDir = config.rootDir;
  if (rootDir == '') { rootDir = path.resolve(".") }

  // 在打开文件夹时，移除文件夹最后的/符号（利用slice截取字符串）。
  var fileName = req.params[0];
  if (fileName.endsWith("/")) {
    fileName = fileName.slice(0, fileName.length - 1)
  }
// 拼接路径
  var filePath = path.join(rootDir, fileName)
  var title = fileName;


  // 判断文件的类型(文件夹？文件？)
  fs.stat(filePath, function (err, data) {
    if (data == null) {
      //如果文件不存在，则跳过逻辑
    } else if (data.isFile()) {

      // 如果是文件，并且文件的后缀是.STL时，判断参数后面是否带了?file=1，如果带了的话，则发送文件给客户端
      // 如果时文件，并且文件的后缀是.STL时，判断参数后面是否带了?file=1，如果没带的话，则发送动态渲染的HTML页面给客户端
      var extname = path.extname(filePath);
      if (extname.toUpperCase() == ".STL" && !req.originalUrl.endsWith("?file=1")) {
        res.render('web3D', { title: title, fileName: fileName });
      } else {
        // 如果是其他文件的话，直接发送文件给客户端
        res.sendFile(filePath);
      }
    } else if (data.isDirectory()) {

      // 如果时文件夹，则收集文件夹下面的子文件夹及文件的列表，并通过list.html渲染后发送给客户端            
      fs.readdir(filePath, function (err, files) {
        var fileArr = [];
        files.forEach(function (filename) {
          fileArr.push(filename);
        });
        var directory = '';
        if (fileName != '') { directory = '/' + fileName; }
        res.render('list', { title: title, parent: fileName + '/..', directory: directory, personInfoList: fileArr });
      });
    }
  });
});

module.exports = router;
